import { createStore } from 'vuex';
import router from '@/router'; 
import axios from 'axios';

// 定义状态（state）
const state = {
  count: 0,
  name:"未登录用户",
  age:18
  // 其他状态...
};

router.beforeEach((to, from, next) => {
  const token = localStorage.getItem('token');

  if (to.meta.requiresAuth && !token) {
    next('/login'); // 未登录，重定向到登录页
  } else {
    // 无论 Token 是否有效，都将其附加到请求头中，由后端验证
    axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;
    next();
  }
});
// 定义同步状态变更方法（mutations）
const mutations = {
  increment(state) {
    state.count++;
  },

  setName(state,name){
    state.name = name;
  },

  setAge(state,age){
    state.age = age;
  },

  decrement(state) {
    state.count--;
  },

  // 其他mutation...
};

// 定义异步操作（actions）
const actions = {
  async incrementAsync({ commit }) {
    setTimeout(() => {
      commit('increment');
    }, 1000);
  },

  async decrementAsync({ commit }) {
    setTimeout(() => {
      commit('decrement');
    }, 1000);
  },

  actionSetAge({ commit },age){
    commit('setAge',age)
  }

  // 其他action...
};

// 定义计算属性（getters）
const getters = {
  doubleCount(state) {
    return state.count * 2;
  },

  // 其他getter...
};

// 创建并导出 Vuex Store 实例
export default createStore({
  state,
  mutations,
  actions,
  getters,
});